package com.dao;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.NonUniqueResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import com.entidades.Administrador;
import com.entidades.Usuario;

@Stateless
public class UsuarioDAO extends GenericDAO<Usuario>{

	@PersistenceContext(unitName = "Projeto2POD")
	private EntityManager em;
	
	public UsuarioDAO() {
		super(Usuario.class);
	}

//	public UsuarioDAO(Class<Usuario> entityClass) {
//		super(entityClass);
//		// TODO Auto-generated constructor stub
//	}

	public Usuario findByTipo(String tipo){		
		try{
			Query q = em.createQuery("select a from Usuario a where a.tipo='"+tipo+"'");
			Usuario a =(Usuario)q.getSingleResult();
			return a;
		} catch (NoResultException e) {
			return null;
		}
	}

	public Usuario findByLogin(String login, String senha){		
		try{
			Query q = em.createQuery("select a from Usuario a where a.login='"+login+"' and a.senha='"+senha+"'");

			return (Usuario)q.getSingleResult();
		}
		catch (NoResultException e) {
			return null;
		}

	}
	
	public Usuario findByLoginn(String login){		
		try{
			Query q = em.createQuery("select a from Usuario a where a.login='"+login+"'");

			return (Usuario)q.getSingleResult();
		}
		catch (NoResultException e) {
			return null;
		}

	}
	
	public Usuario findByLogin3(String login){		
		try{
			Query q = em.createQuery("select a from Usuario a where a.login='"+login+"'");

			return (Usuario)q.getSingleResult();
		}
		catch (NoResultException e) {
			return null;
		}

	}
	
	public Usuario findBySenha(String senha){		
		try{
			Query q = em.createQuery("select a from Usuario a where a.senha='"+senha+"'");

			return (Usuario)q.getSingleResult();
		}
		catch (NoResultException e) {
			return null;
		}

	}

	public Usuario findByCPF(String CPF){
		try {
			Query q = em.createQuery("select a from Usuario a where a.CPF LIKE '%" + CPF + "%'");
			return (Usuario)q.getSingleResult();
		} catch (NoResultException e) {
			return null;
		} catch (NonUniqueResultException e) {
			return null;
		}
	}
	public Usuario findByLogin2(String login){		
		try {
			Query q = em.createQuery("select a from Usuario a where a.login='"+login+"'");
			Administrador a =(Administrador)q.getSingleResult();
			return a;
		} catch (NoResultException e) {
			return null;
		}
	}
}
